// 瓦片层

#ifndef ALICE_MAP_TILE_LAYER_H_
#define ALICE_MAP_TILE_LAYER_H_

#include <vector>
#include <string>

#include "layer.h"

namespace alice {

// 瓦片集
struct TileSet {
  int first_id, last_id;
  int row, columns;
  int tile_count, tile_size;
  std::string name, source;
};

using TileSetList = std::vector<TileSet>;
using TileMap = std::vector<std::vector<int> >;

// 瓦片层。这一层存储地图瓦片数组以及地图使用到的瓦片集的信息。
class TileLayer : public Layer {
  public:
    TileLayer(int tile_size, int row, int columns, TileMap tile_map, TileSetList tile_sets);
    virtual void Render();
    virtual void Update();
    TileMap GetTileMap() { return tile_map_; }

  private:
    int tile_size_;
    int row_;
    int columns_;
    TileMap tile_map_;
    TileSetList tile_sets_;
};

}

#endif // ALICE_MAP_TILE_LAYER_H_